package com.ruoyi.device.service;

import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletResponse;

/**
 * WiFi统计服务接口
 * 
 * @author ruoyi
 * @date 2025-09-12
 */
public interface IStatisticsService 
{
    /**
     * 获取统计概览数据
     * 
     * @param startDate 开始日期
     * @param endDate 结束日期
     * @param deviceName 设备名称
     * @param locationName 场所名称
     * @return 统计概览数据
     */
    Map<String, Object> getOverviewStatistics(String startDate, String endDate, String deviceName, String locationName);

    /**
     * 获取设备统计数据列表
     * 
     * @param startDate 开始日期
     * @param endDate 结束日期
     * @param deviceName 设备名称
     * @param locationName 场所名称
     * @return 设备统计列表
     */
    List<Map<String, Object>> getDeviceStatistics(String startDate, String endDate, String deviceName, String locationName);

    /**
     * 获取连接趋势图表数据
     * 
     * @param startDate 开始日期
     * @param endDate 结束日期
     * @param deviceId 设备ID
     * @return 图表数据
     */
    Map<String, Object> getConnectionChartData(String startDate, String endDate, String deviceId);

    /**
     * 获取设备状态分布数据
     * 
     * @return 状态分布数据
     */
    Map<String, Object> getDeviceStatusData();

    /**
     * 获取地域分布图表数据
     * 
     * @param startDate 开始日期
     * @param endDate 结束日期
     * @return 地域分布数据
     */
    Map<String, Object> getRegionChartData(String startDate, String endDate);

    /**
     * 获取时段分析图表数据
     * 
     * @param startDate 开始日期
     * @param endDate 结束日期
     * @return 时段分析数据
     */
    Map<String, Object> getHourChartData(String startDate, String endDate);

    /**
     * 获取设备详细信息
     * 
     * @param deviceId 设备ID
     * @param startDate 开始日期
     * @param endDate 结束日期
     * @return 设备详细信息
     */
    Map<String, Object> getDeviceDetailInfo(String deviceId, String startDate, String endDate);

    /**
     * 导出统计报表
     * 
     * @param response HTTP响应
     * @param startDate 开始日期
     * @param endDate 结束日期
     * @param deviceName 设备名称
     * @param locationName 场所名称
     */
    void exportStatistics(HttpServletResponse response, String startDate, String endDate, String deviceName, String locationName);
} 